import java.util.Random;

public abstract class Cromosoma {
	protected boolean[] genes;
	protected double[] fenotipo;
	protected double aptitud;
	protected double puntuacion;
	protected double puntuacionAcumulada;
	protected int longitudCromosoma;
	protected int semilla=5;
	protected double xMaxTotal;
	
	
	public abstract double evalua();
	public abstract double[] fenotipo();
	public abstract double funcion(double[] x);
	public abstract Cromosoma clonar();
		
	public void insertaGenes(boolean genPadre, int i){
		this.genes[i]= genPadre;   
	}
	
	public double[] getFenotipo() {
		return fenotipo;
	}

	public void setFenotipo(double[] fenotipo) {
		this.fenotipo = fenotipo;
	}

	public double getPuntuacion() {
		return puntuacion;
	}
	
	public void setPuntuacion(double puntuacion) {
		this.puntuacion = puntuacion;
	}

	public double getPuntuacionAcumulada() {
		return puntuacionAcumulada;
	}

	public void setPuntuacionAcumulada(double puntuacionAcumulada) {
		this.puntuacionAcumulada = puntuacionAcumulada;
	}

	public boolean[] getGenes() {
		return genes;
	}

	public void setGenes(boolean[] genes) {
		this.genes = genes;
	}

	public double getAptitud() {
		return aptitud;
	}
	public void setAptitud(double aptitud) {
		this.aptitud = aptitud;
	}

	public void inicializaCromosoma() {
		Aleatorios al = new Aleatorios();
		
		for(int i = 0; i < longitudCromosoma; i++){
			
			boolean a = al.booleano();
			genes[i] = a;
		}
		
	}

}
